#ifndef __LCDTOUCHPAD_H__
#define __LCDTOUCHPAD_H__ 

#include "main.h"
#include "lcd.h"
#include "delay.h"

#define LCD_TOUCHPAD_I2C_SCL_PIN    GPIO_PIN_0
#define LCD_TOUCHPAD_I2C_SCL_PORT   GPIOB
#define LCD_TOUCHPAD_I2C_SDA_PIN    GPIO_PIN_11
#define LCD_TOUCHPAD_I2C_SDA_PORT   GPIOF

#define LCD_TOUCHPAD_RESET_PIN 			GPIO_PIN_13
#define LCD_TOUCHPAD_RESET_PORT 		GPIOC

#define LCD_TOUCHPAD_INT_PIN 				GPIO_PIN_1
#define LCD_TOUCHPAD_INT_PORT 			GPIOB
#define LCD_TOUCHPAD_I2C_SCL_ENABLE() do {__HAL_RCC_GPIOB_CLK_ENABLE();}while(0)
#define LCD_TOUCHPAD_I2C_SDA_ENABLE() do {__HAL_RCC_GPIOF_CLK_ENABLE();}while(0)
#define LCD_TOUCHPAD_I2C_SCL(x)     do{x?\
                            HAL_GPIO_WritePin(LCD_TOUCHPAD_I2C_SCL_PORT,LCD_TOUCHPAD_I2C_SCL_PIN,GPIO_PIN_SET):\
                            HAL_GPIO_WritePin(LCD_TOUCHPAD_I2C_SCL_PORT,LCD_TOUCHPAD_I2C_SCL_PIN,GPIO_PIN_RESET);\
                            delay_us(2);}while(0)
#define LCD_TOUCHPAD_I2C_SDA(x)     do{x?\
                            HAL_GPIO_WritePin(LCD_TOUCHPAD_I2C_SDA_PORT,LCD_TOUCHPAD_I2C_SDA_PIN,GPIO_PIN_SET):\
                            HAL_GPIO_WritePin(LCD_TOUCHPAD_I2C_SDA_PORT,LCD_TOUCHPAD_I2C_SDA_PIN,GPIO_PIN_RESET);\
                            delay_us(2);}while(0)
#define LCD_TOUCHPAD_IIC_READ_SDA    HAL_GPIO_ReadPin(LCD_TOUCHPAD_I2C_SDA_PORT,LCD_TOUCHPAD_I2C_SDA_PIN)
#define LCD_TOUCHPAD_READ_INT    		 HAL_GPIO_ReadPin(LCD_TOUCHPAD_INT_PORT,LCD_TOUCHPAD_INT_PIN)
														


#define LCD_TOUCHPAD_I2C_ADDR 0x28       //WR ADDR

#define LCD_TOUCHPAD_COMMAND_REG 0x8040
#define LCD_TOUCHPAD_PRODUCT_ID_REG 0x8140
#define LCD_TOUCHPAD_POSITION_REG 0x8047
#define LCD_TOUCHPAD_STATUS_REG 0x814e

#define LCD_TOUCHPAD_TP1_REG      0x8150      /* 第一个触摸点数据地址 */
#define LCD_TOUCHPAD_TP2_REG      0X8158      /* 第二个触摸点数据地址 */
#define LCD_TOUCHPAD_TP3_REG      0X8160      /* 第三个触摸点数据地址 */
#define LCD_TOUCHPAD_TP4_REG      0X8168      /* 第四个触摸点数据地址 */
#define LCD_TOUCHPAD_TP5_REG      0X8170      /* 第五个触摸点数据地址 */
#define LCD_TOUCHPAD_TP6_REG      0X8178      /* 第六个触摸点数据地址 */
#define LCD_TOUCHPAD_TP7_REG      0X8180      /* 第七个触摸点数据地址 */
#define LCD_TOUCHPAD_TP8_REG      0X8188      /* 第八个触摸点数据地址 */
#define LCD_TOUCHPAD_TP9_REG      0X8190      /* 第九个触摸点数据地址 */
#define LCD_TOUCHPAD_TP10_REG     0X8198      /* 第十个触摸点数据地址 */
typedef struct
{
	uint16_t x;
	uint16_t y;
} lcd_touchpad_pos_t;
extern lcd_touchpad_pos_t lcd_touchpad_pos[10];
void lcd_touchpad_i2c_init(void);

void lcd_touchpad_i2c_stop(void);

void lcd_touchpad_i2c_start(void);

uint8_t lcd_touchpad_i2c_wait_ack(void);

void lcd_touchpad_i2c_ack(void);

void lcd_touchpad_i2c_nack(void);

void lcd_touchpad_i2c_send_byte(uint8_t data);

uint8_t lcd_touchpad_i2c_read_byte(unsigned char ack);/* IIC读取一个字节 */

void lcd_touchpad_init(void);

void lcd_touchpad_get_pos(int16_t *x,int16_t *y);

uint8_t lcd_touchpad_wr_reg(uint16_t reg, uint8_t *data,uint16_t len);
uint8_t lcd_touchpad_rd_reg(uint16_t reg,uint8_t *data,uint16_t len);
uint8_t lcd_touchpad_scan(void);
uint8_t lcd_touchpad_touched(void);

#endif